Turbo codes are used for data communication systems [such as a High Speed Downlink Shared Channel (HS-DSCH) in High Speed Downlink Packet Access (HSDPA) in wireless communication systems] as a forward error correction (FEC) scheme. Decoding of Turbo codes is iterative in nature. That is, each Turbo code block is decoded several times. In general, there is a tradeoff between the Turbo code performance, which improves with the number of decoding iterations, and the decoding delay and computational complexity. Conventionally, the number of decoding iterations is fixed (for example, at 4 or 8 iterations). However, some Turbo code blocks may need only a few decoding iterations to successfully decode the code blocks, (i.e. to converge), before reaching the last decoding iteration and further iterations are not necessary. In such a case, if the Turbo decoder stops the redundant decoding iterations for the good blocks, it reduces the decoding delay and power consumption without degrading performance.
To prevent an endless loop when the stopping rule is never satisfied, the decoder stops after a maximum number of iterations. Several stopping rules for Turbo decoding have been addressed in the prior art. However, prior art stopping rules are focused on the case where decoding iterations converge (e.g., for good Turbo coded blocks).